iT邦幫忙

2023 iThome 鐵人賽

DAY 0
0
自我挑戰組

從零到全端:轉職者的 To-Do List 技能之旅系列 第 5

從零到全端:轉職者的 To-Do List 技能之旅-資料庫設計

  • 分享至 

  • xImage
  •  

資料庫設計

有了功能需求、API 規格就可以來規劃資料庫拉!
一樣先上學習資源
資料庫設計要注意什麼?. 文章大綱 | by De_ | Medium
資料庫設計的基本概念 - Microsoft 支援服務

資料庫選擇

MySQL

因為有要建立會員系統,到時候會員與任務是有關聯的,所以選擇使用關聯式資料庫。
再加上 Wehelp 第一階段使用的是 MySQL,所以在資料庫選擇上就選了 MySQL。
這邊強烈推薦彭彭老師的課程影片:
MySQL 資料庫全攻略 - YouTube 講解的清晰易懂,非常適合新手。/images/emoticon/emoticon34.gif
需要查詢指令可以到 MySQL 語法匯整 基礎要用到的都有

設計方式

主要是依照我們使用者故事開出來的功能需求以及 API 規格去設定資料庫的格式
盡量做到符合正規化的方式
一個欄位只有一個資料
欄位功能不重複
一張表只放同類資料

Todo

我們從使用者故事、畫面設計所得到的資料需求有兩個方面

  • 會員系統
  • 任務資訊

會員系統需求

  1. id
  2. username
  3. email
  4. password_hash
  5. salt

password_hash、salt:

創建指令:

CREATE TABLE member (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(255) UNIQUE NOT NULL,
    password VARCHAR(500) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL
);

任務資訊需求

  1. id
  2. member_id
  3. title
  4. priority
  5. status
  6. start
  7. deadline
  8. description

member_id:

  • task 的 API 在存取的時候有需要會員編號,需要使用 FOREIGN KEY 關聯到 member table 的 id
    • 當用戶資料被移除時,需要同時刪除所有該用戶建立的 task 所以添加 ON DELETE CASCADE

priority、start、status:

  • 用於過濾的條件資料,會有預設值或是使用 ENUM 限定值

description:

  • 可能比較長所以會將它設為 text 格式

創建指令:

CREATE TABLE task (
    id INT PRIMARY KEY AUTO_INCREMENT,
    member_id INT NOT NULL,
    title VARCHAR(255) NOT NULL,
    priority ENUM('High', 'Medium', 'Low') DEFAULT "Medium",
    status ENUM('Todo', 'Doing', 'Done')  DEFAULT "Todo",
    start DATETIME DEFAULT CURRENT_TIMESTAMP,
    deadline DATETIME DEFAULT (NOW() + INTERVAL 1 DAY),
    description TEXT,
    FOREIGN KEY (member_id) REFERENCES member(id) ON DELETE CASCADE
);

準備開發

總算將開發前需要的部分給準備好了,明天開始就要正式進入開發拉~~~/images/emoticon/emoticon42.gif


上一篇
從零到全端:轉職者的 To-Do List 技能之旅- API 設計
下一篇
從零到全端:轉職者的 To-Do List 技能之旅-後端開發-環境建立
系列文
從零到全端:轉職者的 To-Do List 技能之旅15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言